home *** CD-ROM | disk | FTP | other *** search
/ Shareware Super Platinum 8 / Shareware Super Platinum 8.iso / mac / PROGTOOL / DOS32.ZIP;1 / MACROS.386 < prev    next >
Encoding:
Text File  |  1993-09-08  |  4.7 KB  |  215 lines

  1. ;-----------------------------------------------------------------------
  2. ;
  3. ;        USFUL MACROS FOR YOUR PROTECTED MODE PROGRAM
  4. ;
  5. ; Writen By Adam Seychell
  6. ;
  7. ;They include
  8. ;
  9. ; FILE I/O:
  10. ;    OPEN_FILE f#,'filename'
  11. ;       READ_FILE f#, segment ,
  12. ;
  13. ;
  14. ;-----------------------------------------------------------------------
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22. ;-----------------------------------------------------------------------
  23. ;           OPEN  FILE
  24. ; Open     <path\filename>
  25. ;-----------------------------------------------------------------------
  26. Open macro X, FileName , nameSEG , nameOFS
  27.  
  28. DATA32 SEGMENT PUBLIC USE32
  29. file_to_open&X  db FileName,0
  30. FileHandle&X    dw 0
  31. ENDS
  32.     IFB <nameSEG>
  33.             mov ss:Real_DS,DATA32
  34.             lea dx,file_to_open&X    ; DS:DX    points to file name
  35.         ELSE
  36.                 mov ax,nameSEG
  37.             mov ss:Real_DS,ax
  38.                 mov dx,nameOFS
  39.         ENDIF
  40.         mov ax,3D02h        ; open a file function
  41.     dosint 21h
  42.         mov FileHandle&X , AX
  43. endm
  44.  
  45.  
  46.  
  47.  
  48. ;-----------------------------------------------------------------------
  49. ;           CREATE  FILE
  50. ; create_file     <path\filename>
  51. ;-----------------------------------------------------------------------
  52. Create macro X, FileName , nameSEG , nameOFS
  53. DATA32 SEGMENT PUBLIC USE32
  54. file_to_open&X  db FileName,0
  55. FileHandle&X    dw 0
  56. ENDS
  57.     IFB <nameSEG>
  58.             mov  word ptr ss:Real_DS,DATA32
  59.             lea dx,file_to_open&X    ; DS:DX    points to file name
  60.         ELSE
  61.                 mov ax,nameSEG
  62.             mov  word ptr ss:Real_DS,ax
  63.                 mov dx,nameOFS
  64.         ENDIF
  65.         mov ax,3C02h        ; creat a file function
  66.         mov cx,0
  67.     dosint 21h
  68.         mov FileHandle&X , AX
  69. endm
  70.  
  71.  
  72.  
  73.  
  74. ;-----------------------------------------------------------------------
  75. ;           CLOSE
  76. ; close    <path\filename>
  77. ;-----------------------------------------------------------------------
  78. Close  macro  X
  79.         mov ah,03Eh         ; close a file function
  80.         mov BX,FileHandle&X
  81.     dosint 21h
  82. endm
  83.  
  84.  
  85. ;-----------------------------------------------------------------------
  86. ;           READ
  87. ; read
  88. ;-----------------------------------------------------------------------
  89. BlockRead  macro  X ,BUFFER_SEG, BUFFER_OFS, BYTE_COUNT
  90.         mov BX,FileHandle&X
  91.         mov cx,BYTE_COUNT
  92.     mov dx,offset BUFFER_OFS    ;  DS:DX points to buffer
  93.         mov ax,BUFFER_SEG
  94.     mov word ptr ss:Real_DS,ax
  95.         mov ah,03Fh         ; read_handle file function
  96.        dosint 21h
  97. endm
  98.  
  99.  
  100. ;-----------------------------------------------------------------------
  101. ;           WRITE
  102. ; write_file
  103. ;-----------------------------------------------------------------------
  104. BlockWrite  macro  X ,BUFFER_SEG, BUFFER_OFS, BYTE_COUNT
  105.         mov BX,FileHandle&X
  106.         mov cx,BYTE_COUNT
  107.     mov dx,offset BUFFER_OFS    ;  DS:DX points to buffer
  108.         mov ax,BUFFER_SEG
  109.     mov word ptr ss:Real_DS,ax
  110.         mov ah,040h         ; write handle file function
  111.        dosint 21h
  112. endm
  113.  
  114.  
  115. file_SEEK MACRO IT,PLACELO,PLACEHI
  116. ;SEEK  CX:DX = offset from START of new file position
  117.    MOV  DX,PLACELO
  118.    MOV  CX,PLACEHI
  119.    MOV  AH,42H
  120.    MOV  AL,0
  121.    MOV  BX,FILEHANDLE&IT
  122.    DOSINT  21H
  123. ENDM
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132. Writeln MACRO STRING_,COLOR3_S
  133. LOCAL TEXT3_S
  134.  
  135.         IFB <COLOR3_S>
  136.         mov     ah,07
  137.     ELSE
  138.                 MOV    AH,COLOR3_S
  139.         ENDIF
  140.  
  141.         push edx
  142.     mov    EDX,offset TEXT3_S
  143.     CALL    TEXT
  144.         pop edx
  145. data32 SEGMENT PUBLIC  use32
  146. TEXT3_S DB STRING_,10,13,36
  147. ends
  148. ENDM
  149.  
  150. Write MACRO STRING_, COLOR5_T
  151. LOCAL TEXT5_T
  152.         IFB <COLOR5_T>
  153.         mov     ah,07
  154.     ELSE
  155.                 MOV    AH,COLOR5_T
  156.         ENDIF
  157.  
  158.         push edx
  159.     MOV    EDX,OFFSET TEXT5_T
  160.     CALL    TEXT
  161.         pop edx
  162. data32 SEGMENT PUBLIC  use32
  163. TEXT5_T DB STRING_,36
  164. ends
  165. ENDM
  166.  
  167.  
  168. CRTC        equ    3D4h
  169. SEQ        EQU    3C4h
  170. GC        EQU    3CEh
  171. ATTR        EQU    3C0h
  172.  
  173.     
  174. ;ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕ
  175. ;        MACROS FOR     VGA    REGISTERS
  176. ;ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕ
  177.  
  178. inp    MACRO    port
  179.     mov    dx,port        ;; Read a byte from port 'port' into al
  180.     in    al,dx
  181. ENDM
  182.  
  183. outp    MACRO    port, value
  184.     mov    dx,port        ;; Write a byte to port 'port'
  185.     mov    al,value
  186.     out    dx,al
  187. ENDM
  188.  
  189. rdindx    MACRO    port, index
  190.     mov    dx,port        ;; Read register 'port' index 'index'
  191.     mov    al,index
  192.     out    dx,al
  193.     inc    dx
  194.     in    al,dx        ;; Result in AL
  195. ENDM
  196.  
  197. wrindx    MACRO    port, index, val
  198.     mov    al,index    ;; Write 'port' index 'index' with 'val'
  199.     mov    ah,val
  200.     mov    dx,port
  201.     out    dx,ax
  202. ENDM
  203.  
  204. modindx    MACRO    port, index, mask, nvw
  205.     mov    dx,port
  206.     mov    al,index
  207.     out    dx,al
  208.     inc    dx
  209.     in    al,dx            ;; Read the old value
  210.     and    al,not mask        ;; Mask out bits to be changed
  211.     or    al,nvw            ;; Or in the changed bits
  212.     out    dx,al            ;; Write the value back again
  213. ENDM
  214.  
  215.